import { apiClient } from '@/utils/apiClient';

export const DepartService = {
    /**
     * 获取所有部门
     * @returns {Promise<Object>} 部门列表
     */
    async getAllDepart() {
        return apiClient.get('/api/depart/');
    },

    /**
     * 创建部门
     * @param {Object} departData - 部门数据
     * @returns {Promise<Object>} 创建结果
     */
    async createDepart(departData) {
        return apiClient.post('/api/depart/', departData);
    },

    /**
     * 获取单个部门
     * @param {string} id - 部门ID
     * @returns {Promise<Object>} 部门详情
     */
    async getDepart(id) {
        return apiClient.get(`/api/depart/${id}`);
    },

    /**
     * 更新部门信息
     * @param {string} id - 部门ID
     * @param {Object} departData - 部门数据
     * @returns {Promise<Object>} 更新结果
     */
    async updateDepart(id, departData) {
        return apiClient.put(`/api/depart/${id}`, departData);
    },

    /**
     * 删除部门
     * @param {string} id - 部门ID
     * @returns {Promise<Object>} 删除结果
     */
    async deleteDepart(id) {
        return apiClient.delete(`/api/depart/${id}`);
    },

    /**
     * 查询用户列表
     * @param {string|Object} queryParam - 查询参数（字符串或对象）
     * @returns {Promise<Object>} 用户列表
     */
    async queryUsers(queryParam) {
        // 构建干净的查询参数对象
        const params = {};

        if (typeof queryParam === 'string') {
            const searchParams = new URLSearchParams(queryParam);
            for (const [key, value] of searchParams) {
                if (value !== undefined && value !== null && value !== '') {
                    params[key] = value;
                }
            }
        } else if (typeof queryParam === 'object' && queryParam !== null) {
            for (const [key, value] of Object.entries(queryParam)) {
                if (value !== undefined && value !== null && value !== '') {
                    params[key] = value;
                }
            }
        }

        // 正确地将 params 作为查询参数发送，而不是嵌套在 { params } 中
        return apiClient.get('/api/user/query/class', params);
    }
};